package com.zja.www.service;

import com.zja.www.entity.Admin;
import com.zja.www.entity.Schedule;
import com.zja.www.entity.User;
import java.util.List;
import java.sql.Timestamp;



import java.rmi.ServerException;
import java.util.List;

/**
 * @author ja
 * @create 2025/3/27
 * @description 管理员Admin业务层接口
 */
public interface AdminService {
    /**
     * 管理员登录
     * @param username 用户名
     * @param password 密码
     * @return 是否登录成功
     */
    boolean login(String username, String password);

    /**
     * 添加管理员
     * @param admin 管理员实体
     * @return 是否返回成功
     */
    boolean addAdmin(Admin admin);

    /**
     * 根据ID查询管理员
     * @param id 管理员ID
     * @return 管理员实体，若不存在返回null
     */
    Admin getAdminById(int id) ;

    /**
     * 根据用户名查询管理员
     * param admin 管理员实体
     *return 管理员实体，若不存在返回null
     */
    Admin getAdminByUsername(String username);

    /**
     * 获取所有管理员列表
     * @return  管理员列表，若无数据返回空列表
     */
    List<Admin> getAllAdmins();

    /**
     * 更新管理员信息
     * @param admin 管理员实体
     * @return 是否更新成功
     */
     boolean updateAdmin(Admin admin)  ;

    /**
     * 删除管理员
     * param id 管理员ID
     * return 是否删除成功
     */
    boolean deleteAdmin(int id) ;

    boolean addSchedule(Schedule schedule);

    boolean updateSchedule(Schedule schedule);

    boolean deleteSchedule(int scheduleId);

    Schedule getScheduleById(int scheduleId);

    List<Schedule> getSchedulesByDate(Timestamp date);

    List<Schedule> getSchedulesByDoctor(int doctorId);

    List<Schedule> getSchedulesByDepartment(int departmentId);

    List<User> getUnverifiedUsers();

    List<User> getVerifiedUsers();

    boolean verifyUser(int userId);

    boolean unverifyUser(int userId);


}
